QT5中QTimer使用时易错之处,以及正确使用方式 |
您所在的位置:网站首页 › timer started › QT5中QTimer使用时易错之处,以及正确使用方式 |
实际应用中,常常会用到关于延时的功能,或者定时的功能;在C++或者C中可以自定义函数。也可以使用自带的Sleep(number)函数,其中number表示需要延时多少ms; 在这里将会向大家介绍一下关于QT5中的定时器类:QTimer 定时器类QTimer提供当定时器触发时发射一个信号的定时器,常用的编程格式如下: QTimer *timer = new QTimer(this); timer->start(2000); //该语句不是只运行一次,而是一直运行下去,所以需要一个判断语句来结束 connect(timer, SIGNAL(timeout()), this, SLOT(myTimeout1()));第一句是在当前this指针指向的界面上定义一个定时器,即:timer指针的父窗口是this指针指向的窗口界面。 第二句的含义是指当timer定时器开始定时,定时的时间长度为2000ms,这句程序还等价于下面这两句程序 timer->setInterval(2000); timer->start();它们的作用是一样的。 第三句的意思很明显,就是指当2000ms结束后,会发射一个函数为timeout()信号的信号,该函数经查询作用如下: void QTimer::timeout() This signal is emitted when the timer times out. 该timeout()函数会与槽函数timerDone()联系起来,并运行槽函数。 下面重点来了,重要的事情说三遍!重要的事情说三遍!重要的事情说三遍! 注意第二行代码: timer->start( 2000 ); // 2秒触发定时器该行代码是每隔2000ms后就会重启定时器,重新调用一次槽函数,除非调用stop()将定时器关掉。例如这样 QTimer *timer = new QTimer(); timer->setInterval(100);//每5秒时间用尽之后运行一次connect()函数; timer->start(); //该语句不是只运行一次,而是一直运行下去,所以需要一个判断语句来结束 connect(timer, SIGNAL(timeout()), this, SLOT(myTimeout1())); if(number>118) { number=0; timer->stop(); }
这里定义了一个全局变量number,此处目的是让定时器运行118次,在第119次以后不再使用定时功能。 void :myTimeout1() { number++; QString str1; //将变量设置为全局变量、数组 if(numbertableWidget_3->setItem(0,0,new QTableWidgetItem(str1)); } }data1[ ][ ]是定义的一个全局数组。 以上是个人对定时器的总结,写的不太好,请见谅,有疑问的可以留言。
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |